Computer systems in general are well known. A typical system comprises a computer, keyboard, mouse, and a monitor. Further, the computer might comprise a CPU, and RAM and allows various software programs to be used. Software programs are well known and will not be described in detail. Briefly, a software program allows a computer to be customized to perform functions and services that a user demands. Software programs are created using various programming tools which might include, a programming language, editors, debuggers, and other tools to assist the programmer. Software has become so advanced, that programmers use a visual representation of their program to help them develop and finalize the software. This is especially true with object-oriented programming.
Object-oriented programs utilize multiple objects. An object is a "black box" that receives and sends messages and is generally capable of performing a specific task. Programming in an object-oriented language involves sending messages to and from various objects. The objects use these messages as inputs to perform their specific task. The specific tasks are strung together in order to accomplish the desired function of the software program. In general, the programmer is not concerned with how the object works, but rather is only concerned with what the object does.
Development of complex software programs is typically shared among a number of groups with each group taking responsibility for a subsystem of the overall software program according to a predetermined high-level design. This high level design typically breaks the program into a number of subsystems with each subsystem consisting of a collection of objects. The objects of one subsystem communicate with objects from another subsystem by sending and receiving messages. When messages are sent and received between objects of different subsystems being developed by different groups, an interface is formed between the two subsystems. The integrity of the high level design, depends upon maintenance of these interfaces.